/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import model.UnidadeMedida;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;

/**
 *
 * @author JONATAS
 */
public class UnidadeMedidaDAO {

    private Session session;
    // método construtor - igual ao nome da UnidadeMedida precedido por public

    public UnidadeMedidaDAO() {
        session = HibernateUtil.getSessionFactory().openSession();
    }

    public void insert(UnidadeMedida m) {
        Transaction t = session.beginTransaction();
        session.save(m);
        t.commit();
    }

    public void update(UnidadeMedida m) {
        Transaction t = session.beginTransaction();
        session.merge(m);
        t.commit();
    }

    public void delete(UnidadeMedida m) {
        Transaction t = session.beginTransaction();
        session.delete(m);
        t.commit();
    }

    public UnidadeMedida findById(int id) {
        return (UnidadeMedida) session.load(UnidadeMedida.class, id);
    }

    public List<UnidadeMedida> findAll() {
        return session.createCriteria(UnidadeMedida.class).list(); // faz um select * from marca
    }
    
    public List<UnidadeMedida> findByDescricao(String descricao) {
                
        Query q = session.createQuery( "from  where upper(unm_descricao) like upper(:X)" ); /* Professor acha melhor usar query e não SQL Query ->   equivalente a SELECT * FROM MARCA (nome da UnidadeMedida) */  
        q.setParameter("X", "%"+descricao+"%");   /* seta o parametro */
        return q.list();
                
    }
}
